本文件比較並示範如何以程式碼使用三大主流生成式 AI:OpenAI ChatGPT(簡述)、Google Gemini / PaLM(詳述)、以及 Anthropic Claude(詳述)。主要聚焦在 Gemini 與 Claude 的中文說明與實作範例(Python、Node.js、Embedding、Multimodal、串流、RAG 與實務建議)。
Claude 深入(中文說明 + 程式碼詳解)
Gemini vs Claude:如何選擇
Claude
(Anthropic):強調可控性、安全性與可解釋策略(constitution-driven),適合對輸出可控性、法遵與風險低容忍度的企業應用。3.Claude 深入(中文說明 + 程式碼詳解)
3.1 Claude 是什麼?設計哲學與適用場景
適合
:需要更嚴格輸出限制、合規審查、或在高風險領域(法律、醫療、金融)降低錯誤輸出的場景3.2 認證與安裝
安裝官方SDK
:pip install anthropic
或 npm install @anthropic/sdk
(以官方為準)3.3 Python 範例:基本呼叫與對話格式
import os
from anthropic import Anthropic, HUMAN_PROMPT, AI_PROMPT
client = Anthropic(api_key=os.getenv('ANTHROPIC_API_KEY'))
human_message = '請用 3 句話總結下列段落:
[段落內容]'
prompt = HUMAN_PROMPT + human_message + AI_PROMPT
resp = client.completions.create(
model='claude-2.1',
prompt=prompt,
max_tokens_to_sample=250,
)
print(resp['completion'])
說明
:Anthropic 使用 HUMAN_PROMPT
與 AI_PROMPT
來協助構造對話式的 prompt,亦可自行控制 system / user 角色的內容
3.4 Node.js 範例:串流與長回應
// 假設有官方 Node SDK,以下為示例性程式
import Anthropic from '@anthropic/sdk';
const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
async function run() {
const resp = await client.completions.create({
model: 'claude-2.1',
prompt: '
Human: 請用中文解釋區塊鏈基礎概念。
Assistant:',
max_tokens_to_sample: 400,
});
console.log(resp.completion);
}
run();
// 若需串流,請參考官方 SDK 或使用 HTTP 長連線的 stream endpoint
3.5 Embeddings 與安全策略(filtering / constitution)
# Embeddings 範例(示意)
emb = client.embeddings.create(model='claude-2-embeddings', input='文件內容')
vec = emb['data'][0]['embedding']
# 存到向量DB、做檢索
3.6 系統提示(Constitution)範例與安全設計
範例
:在 prompt 前加上短版 constitution 指令,要求模型在遇到醫療或法律類問題時回覆高風險提示或建議尋求專業# constitution 範例(簡化)
- 如果請求要求醫療診斷,模型應提供通用建議並強調尋求專業診斷。
- 如果請求涉及違法行為,模型應拒絕並提供安全替代方案。
將此類規則以系統提示或中介檢查流程加入應用中,能顯著降低風險
3.7 錯誤處理、速率限制與成本控管
Retry與退避
:對 429/5xx 錯誤實作重試與退避邏輯Token/Cost控制
:限制 max_tokens_to_sample
、在 prompt 中指示 "只回答要點" 等等監控
:收集呼叫成功率、平均回應時間、token 使用量,以便計費與效能優化若需多模態、與搜尋或 GCP 生態整合
:Gemini
更適合若需極致可控、合規導向或高風險產業
:Claude
提供較多可控性工具與 Constitution 機制